博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Qt学习三 - 菜单栏、工具栏、状态栏
阅读量:6200 次
发布时间:2019-06-21

本文共 2611 字,大约阅读时间需要 8 分钟。

MainWindow::MainWindow(QWidget *parent) :    QMainWindow(parent),    ui(new Ui::MainWindow){    ui->setupUi(this);    /** QAction是Qt中用于添加动作的类,     * 可以将它添加在菜单,作为一个菜单项,也可以添加到工具栏,作为一个工具栏按钮     * 其中参数一是设置该操作按钮的图标,":/images/icon"是资源文件的路径     * 参数二中"&"号代表设置快捷键为"Alt+o"     */    QAction *open = new QAction(QIcon(":/images/icon"),"Open(&O)",this);    /**     * 设置快捷键为"Ctrl+o"     * 这里使用QKeySequence类是为了可以跨平台,例如pc和mac下的键盘不一样,Qt可以根据平台不同设置相应的快捷键     * 该类中为我们定义了很多内置的快捷键,可以直接使用,例如下面注释的一行。     * 也可以自己创建一个QKeySequence类,传入我们想要设置的快捷键。     */    //open->setShortcut(QKeySequence(QKeySequence::Open));    open->setShortcut(QKeySequence("Ctrl+O"));    //设置工具提示    open->setToolTip("open file");    //状态栏提示    open->setStatusTip("open existing file");    //在菜单栏中添加一个菜单。因为Qt界面工程,默认自带了菜单栏、工具栏和状态栏,所以我们可以直接使用ui->menuBar来调用    QMenu *file = ui->menuBar->addMenu("File(&F)");    //将open动作作为一个菜单项添加到file菜单中    file->addAction(open);    //添加到工具栏    ui->mainToolBar->addAction(open);    //创建状态栏,Qt界面工程已经创建    //statusBar();}

状态栏可以显示临时信息、永久信息和其他组件,例如:

statusBar()->showMessage("欢迎!");

运行结果如下:

还可以设定显示时间,毫秒为单位,例如:

statusBar()->showMessage("欢迎!",2000);

这样信息会在2秒后消失。

下面在状态栏中显示一些组件,声明一个私有变量

namespace Ui {class MainWindow;}class MainWindow : public QMainWindow{    Q_OBJECTpublic:    explicit MainWindow(QWidget *parent = 0);    ~MainWindow();private:    Ui::MainWindow *ui;    QLabel *statusLabel;};

然后在构造函数中添加,如下代码

statusLabel = new QLabel(this);    statusLabel->setFrameShape(QFrame::WinPanel);    statusLabel->setFrameShadow(QFrame::Sunken);    ui->statusBar->addWidget(statusLabel);    statusLabel->setText("欢迎!!!");

运行如下:

这样就可以在需要显示信息的时候,调用statusLabel->setText()来设置了。

状态栏显示永久信息需要使用addPermanentWdget函数来添加一个可以显示信息的组建,它会显示在状态栏的右侧,不会被临时信息所遮盖。

QLabel *permanent = new QLabel;    permanent->setFrameStyle(QFrame::Box | QFrame::Sunken);    permanent->setText(      tr("baidu.com"));    permanent->setTextFormat(Qt::RichText);     //设置为超文本    permanent->setOpenExternalLinks(true);      //开启自动打开超链接    ui->statusBar->addPermanentWidget(permanent);

运行结果如下:

在Qt中,mainwindow类提供了menuBar()函数来返回一个菜单栏(QMenuBar),如果没有菜单栏则会新建一个;提供了addToolBar()函数来新加一个工具栏(QToolBar);以及返回状态栏(QStatusBar)的statusBar()函数。上面的代码没有使用这三个函数,是因为Qt界面工程默认已经创建好了。这三个函数仅在mainwindow类中存在,QDialog和QWidget等其他类中都没有提供这三个函数。那么如果我们需要在QDialog或者QWidget类中使用菜单栏、工具栏和状态栏时怎么办?QMenuBar,QToolBar,QStatusBar都继承自QWidget,所以我们可以像使用其他QWidget子类那样进行操作。例如:

QMenuBar *menuBar = new QMenuBar(this);    QMenu *menu = menuBar->addMenu("&File");    QAction *open = new QAction("&Open1",this);    open->setStatusTip("open exsiting file");    menu->addAction(open);

 

转载于:https://www.cnblogs.com/wangcb/p/6665822.html

你可能感兴趣的文章
Android中JNI编程详解
查看>>
演练Ext JS 4.2自定义主题
查看>>
【tensorflow】1.安装Tensorflow开发环境,安装Python 的IDE--PyCharm
查看>>
【maven】 pom.xml详解
查看>>
LINQ中的OrderBy实现多字段升序、降序排序实现
查看>>
idea14导入eclipse项目并部署运行完整步骤
查看>>
杀死O2O的三大杀手?!
查看>>
<Android 应用 之路> 百度地图API使用(1)
查看>>
Java的结构之美【1】——构造对象
查看>>
Android双向滑动菜单完全解析,教你如何一分钟实现双向滑动特效
查看>>
「译」JavaScript 的怪癖 2:两个「空值」:undefined 和 null
查看>>
第一章 计算机系统漫游
查看>>
Android Activity 生命周期再验证
查看>>
shift-and 算法初体验
查看>>
sweetalert api中文开发文档和手册
查看>>
网络视频监控
查看>>
winter 2018 02 01 关于模运算的一道题
查看>>
stack的简单用法总结
查看>>
SpringCloud学习成长之路 五 路由器网关
查看>>
SpringMVC
查看>>